/**
 * @description 使用提供的函数映射对象的键，生成一个新对象。
 * @param {*} obj 
 * @param {*} fn 
 * @returns 
 */
const mapKeys = (obj, fn) =>
  // 使用 Object.keys() 遍历对象的关键。
  // 使用 Array.prototype.reduce() 创建一个新的对象具有相同的价值观和映射键使用 fn。
  Object.keys(obj).reduce((acc, k) => {
    acc[fn(obj[k], k, obj)] = obj[k];
    return acc;
  }, {});
// 例子
mapKeys({ a: 1, b: 2 }, (val, key) => key + val); // { a1: 1, b2: 2 }
